/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package tools.conections.sql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import tools.GUI.PanelGUI;

/**
 *
 * @author fmr
 */
public class MetodosEstaticosOracle {

    public static Connection creaConexion(String servidor, String bd, String usuario, String contraseña) throws SQLException {
        Connection con = null;
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            con = DriverManager.getConnection("jdbc:oracle:thin:@" + servidor + ":1521:" + bd, usuario, contraseña);
            PanelGUI.informacion("Conexión establecida.");
        } catch (SQLException e) {
            PanelGUI.mensajeError("No se ha podido establecer conexión.");
        } catch (ClassNotFoundException e) {
            e.getMessage();
        } catch (NullPointerException e) {
            PanelGUI.mensajeError("URL mal formada\nProblema Conexión: " + e.getMessage());
        }
        return con;
    }

    public static Statement CrearSentencia(Connection con) throws SQLException {
        Statement st = null;
        try {
            st = con.createStatement();
        } catch (SQLException e) {
            PanelGUI.mensajeError("Statement no creado.");
        } catch (NullPointerException e) {
            System.out.println(e.getMessage());
            PanelGUI.mensajeError("Problema Statement: " + e.getMessage());
        }
        return st;
    }

    public static ResultSet recuperarDatos(Statement st, String sentencia) throws SQLException {
        ResultSet rs = null;        
        try {
            rs = st.executeQuery(sentencia);            
        } catch (SQLException e) {
            System.out.println("Consulta errónea.");
            System.out.println(e.getMessage());
        } catch (NullPointerException e) {
            System.out.println(e.getMessage());
        }
        return rs;
    }

    public static void resultado(ResultSet rs, Statement st, String sentencia){
        String cadena = "La consulta \"" + toUperCase(sentencia) + "\" tiene como resultado:\n";
        try {
            while(rs.next()) {
                cadena += rs.getObject(1) + " --------- " + rs.getObject(2) + " --------- " + rs.getObject(3) + "\n";
            }
        } catch (SQLException ex) {
            PanelGUI.mensajeError("Consulta no válida");
        }
        PanelGUI.informacion(cadena);
    }
    private static String toUperCase(String consulta) {
        return consulta.toUpperCase();
    }
}
